<?php

//---------------------------------------------
//-----ОСНОВНА-ОБРАБОТКА-НА-НИЗОВЕ-------------
//---------------------------------------------
//---- Обръща хексов низ в ascii текст:
function hexToStr($hex)
{
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2)
    {  $string .= chr(hexdec($hex[$i].$hex[$i+1]));  }
    return $string; };
//---- Обръща хексов низ в ascii текст: (АЛТЕРНАТИВА)
Function hexstr($hexstr) {
	$hexstr = str_replace(' ', '', $hexstr);
	$hexstr = str_replace('\x', '', $hexstr);
	$retstr = pack('H*', $hexstr);
	return $retstr;
};
//---- Обръща ascii текст в хексов низ:
function strToHex($string)
{
    $hex='';
    for ($i=0; $i < strlen($string); $i++)
    {  $hex .= dechex(ord($string[$i])); }
    return $hex; };
//---- Обръща ascii текст в хексов низ: (АЛТЕРНАТИВА)
Function strhex($string) {
  $hexstr = unpack('H*', $string);
  return array_shift($hexstr);
};
//---- Търси определена дума в низа и взима n-брой знака след нея:
function strGetAfter ($string, $keyword, $chars)
{
    $result= substr($string,strpos($string,$keyword)+strlen($keyword),$chars);
    return $result; 
};
//---- Търси определена дума в низа и взима n-брой знака преди нея:	
function strGetBefore ($string, $keyword, $chars)
{
    $result= substr($string,strpos($string,$keyword)-strlen($keyword),$chars);
    return $result; 
};
//---- Извежда всички знаци между ключова дума старт и ключова дума край (само при първо засичане на двете думи)
function FirstOccurence_between($haystack,$start,$end) {
    if (strpos($haystack,$start) === false || strpos($haystack,$end) === false) {
        return false;
    } else {
        $start_position = strpos($haystack,$start)+strlen($start);
        $end_position = strpos($haystack,$end);
        return substr($haystack,$start_position,$end_position-$start_position);
    }
};
//---- After('::','str1020::Hello World'); връща резултат 'Hello World' --> при първа поява на '::'
function after ($this, $inthat) {
     if (!is_bool(strpos($inthat, $this))) 
     return substr($inthat, strpos($inthat,$this)+strlen($this));
};
//---- Before('::','str1020::Hello World'); връща резултат 'str1020' --> при първа поява на '::'
function before ($this, $inthat) {
        return substr($inthat, 0, strpos($inthat, $this));
}; 
//---- Извежда масив на всички части от текста, започващи с ключова дума старт и завършващи с ключова дума край. (Ключовите думи не влизат в низовете)
function all_between($inthat, $this, $that, $s_this=null, $s_that=null)
{
   $counter = 0; 
   while ($inthat)
   {
      $counter++;
	  if ($s_this!=null && $s_that!=null)
		{
			$temp= after($this, $inthat);
			$val1= before($that, $temp);
			$temp= after($s_this, $temp);
			$val2= before($s_that, $temp);
			if (isset($arr["$val1"])) 
				{
					$val1=$val1."_IGcoDA".rand(10,99);
					$arr["$val1"]=$val2; 
				}
			else $arr["$val1"]=$val2;
			
		}
		else {
			$arr[$counter]['text_id'] = after($this, $inthat);
			$arr[$counter]['text_id'] = before($that, $elements[$counter]['original']);
		}
		$inthat = $temp;
   }
   $arr= clear_array($arr);
   foreach($arr as $key => $value) 
		{
			$value = addslashes($value);
			$arr[$key] = $value;
	}
   return $arr;
};


//---------------------------------------------
//-----ДЕБЪГИНГ-НА-НИЗОВЕ----------------------
//---------------------------------------------
//---- Принтира масив от хекс низове като ascii code (алтернатива на print_r за хекс-масиви)
function printHexArrayAsStr  ($array)
{
    foreach ($array as $key => $value)
    {
        $value=hexToStr($value);
	    echo $value."</br>";
    };      
};
//---- Записва масив като екселска таблица (посредством excelwriter.inc.php)
function ArrayToXML($fileName, $array)
{
	include("excelwriter.inc.php");
	$fileName = $fileName; //низ, включващ ".xml"
	$excel = new ExcelWriter($fileName);

	foreach ($array as $k => $v) {
		$excel->writeLine($str_ext[$k], array('text-align'=>'left', 'color'=> 'green')); };
};



//---------------------------------------------
//-----КОДИНГИ-И-КРИПТАЦИИ---------------------
//---------------------------------------------
//---- Преобразуване на знаците в низа (ASCII to UTF8)
			/*
				$search   = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О',
								  'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ч', 'Ц', 'Ш', 'Щ', 'Ъ', 'Ь', 'Ю', 'Я',
								  'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
								  'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ч', 'ц', 'ш', 'щ', 'ъ', 'ь', 'ю', 'я');
				$replace  = array('Рђ', 'Р‘', 'Р’', 'Р“', 'Р”', 'Р•', 'Р–', 'Р—', 'Р', 'Р™', 'Рљ', 'Р›', 'Рњ', 'Рќ', 'Рћ',
							      'Рџ', 'Р ', 'РЎ', 'Рў', 'РЈ', 'Р¤', 'РҐ', 'Р§', 'Р¦', 'РЁ', 'Р©', 'РЄ', 'Р¬', 'Р®', 'РЇ',
								  'Р°', 'Р±', 'РІ', 'Рі', 'Рґ', 'Рµ', 'Р¶', 'Р·', 'Рё', 'Р№', 'Рє', 'Р»', 'Рј', 'РЅ', 'Рѕ',
								  'Рї', 'СЂ', 'СЃ', 'С‚', 'Сѓ', 'С„', 'С…', 'С‡', 'С†', 'С€', 'С‰', 'СЉ', 'СЊ', 'СЋ', 'СЏ');								  );
        		$subject = '';
		  		echo str_replace($search, $replace, $subject);
			*/
//---- Преобразуване на знаците в низа (ASCII към двубайтови стойности; за туулове, които не поддържат unicode)
			/*
				$search   = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О',
								  'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ч', 'Ц', 'Ш', 'Щ', 'Ъ', 'Ь', 'Ю', 'Я',
								  'а', 'б', 'в', 'г', 'д', 'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
								  'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ч', 'ц', 'ш', 'щ', 'ъ', 'ь', 'ю', 'я');
				$replace  = array('00', '01', '02', '03', '04', '05', '06', '07', '0', '08', '09', '10', '11', '12', '13',
							      '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28',
								  '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43',
								  '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58');								  );
        		$subject = '';
		  		echo str_replace($search, $replace, $subject);
			*/
	
?>